package ar.com.ctrln.persistence.model.factibilidad;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Factibilidad {

	public static final String TIPO_CLIENTE = "NUEVO CLIENTE";
	public static final String TIPO_SERVICIO = "NUEVO SERVICIO";

	public static final String ESTADO_REGISTRADA = "Activo";

	public static final String ESPERA_MANTENIMIENTO = "en Evaluación Mantenimiento";

	public static final String ACEPTADA = "Aceptada";

	public static final String ESPERA_SOCIOS = "en Evaluació`n de Socios ";

	@Transient
	public static final SimpleDateFormat FORMAT_DAY = new SimpleDateFormat(
			"dd/MM/yyyy");

	@Id
	@GeneratedValue(strategy = GenerationType.TABLE)
	@Column(name = "id_factibilidad")
	private long id;

	@Column
	private Date fechaAlta;

	@Column
	private Date fechaModificacion;

	@Column
	private Date fechaResolucion;

	@Column
	private String observaciones;

	@Column
	private String tipoFactibilidad;

	@Column
	private String estado;

	@Column
	private String resolucion;

	@Column
	private boolean activa;

	@OneToMany(mappedBy = "factibilidad")
	private Collection<DetalleFactibilidad> detalles;

	/**
	 * datos del cliente nuevo, o que no esta registrado
	 */

	public Factibilidad() {

	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Date getFechaAlta() {
		return fechaAlta;
	}

	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	public Date getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}

	public Date getFechaResolucion() {
		return fechaResolucion;
	}

	public void setFechaResolucion(Date fechaResolucion) {
		this.fechaResolucion = fechaResolucion;
	}

	public String getObservaciones() {
		return observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public String getTipoFactibilidad() {
		return tipoFactibilidad;
	}

	public void setTipoFactibilidad(String tipoFactibilidad) {
		this.tipoFactibilidad = tipoFactibilidad;
	}

	public String getResolucion() {
		return resolucion;
	}

	public void setResolucion(String resolucion) {
		this.resolucion = resolucion;
	}

	public boolean isActiva() {
		return activa;
	}

	public void setActiva(boolean activa) {
		this.activa = activa;
	}

	public Collection<DetalleFactibilidad> getDetalles() {
		return detalles;
	}

	public void setDetalles(Collection<DetalleFactibilidad> detalles) {
		this.detalles = detalles;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getEstado() {
		return estado;
	}

	public String getFechaAltaString() {
		return FORMAT_DAY.format(fechaAlta);
	}

	public String getFechaResolucionString() {
		return FORMAT_DAY.format(fechaResolucion);
	}

}
